Case 1
X = rbind(c(-3,5),c(-4,-1),c(2,-2),c(5,4))
y = c(1,2,3,4)
C = 20
plot_nearest_neighbour_decision_boundary(X, y, dis = "L1", title = "Nearest Neighbour in L1")

plot_nearest_neighbour_decision_boundary(X, y, dis = "L2", title = "Nearest Neighbour in L2")

plot_decision_boundary(X,y,beta = WW_pri_opt(X,y,C), title = "WW")

plot_decision_boundary(X,y,beta = CS_pri_opt(X,y,C), title = "CS")

plot_decision_boundary(X,y,beta = Duchi_pri_opt(X,y,C), title = "Duchi")

plot_decision_boundary(X,y,beta = MDuchi_pri_opt(X,y,C), title = "Mduchi")

plot_decision_boundary(X,y,beta = New1_pri_opt(X,y,C), title = "New1, 0", dagger_rule = F)

plot_decision_boundary(X,y,beta = New1_pri_opt(X,y,C), title = "New1, dagger", dagger_rule = T)

plot_decision_boundary(X,y,beta = New3_pri_opt(X,y,C), title = "New3, 0", dagger_rule = F)

plot_decision_boundary(X,y,beta = OVA_pri_opt(X,y,C), title = "OVA")

plot_decision_boundary(X,y,beta = LLW_pri_opt(X,y,C=10), title = "LLW")

plot_decision_boundary(X,y,beta = MSVM7_pri_opt(X,y,C), title = "Modifed LLW, 0", dagger_rule = F)

plot_decision_boundary(X,y,beta = MSVM7_pri_opt(X,y,C), title = "Modifed LLW, dagger")

plot_decision_boundary(X,y,beta = MSVM8_pri_opt(X,y,C), title = "MSVM8")

Case 2
X = rbind(c(-2,-2),c(-2,2),c(2,-2),c(2,2))
y = c(1,2,3,4)
C = 20
plot_nearest_neighbour_decision_boundary(X, y, dis = "L1", title = "Nearest Neighbour in L1")

plot_nearest_neighbour_decision_boundary(X, y, dis = "L2", title = "Nearest Neighbour in L2")

plot_decision_boundary(X,y,beta = WW_pri_opt(X,y,C), title = "WW")

plot_decision_boundary(X,y,beta = CS_pri_opt(X,y,C), title = "CS")

plot_decision_boundary(X,y,beta = Duchi_pri_opt(X,y,C), title = "Duchi")

plot_decision_boundary(X,y,beta = MDuchi_pri_opt(X,y,C), title = "Mduchi")

plot_decision_boundary(X,y,beta = New1_pri_opt(X,y,C), title = "New1, 0", dagger_rule = F)

plot_decision_boundary(X,y,beta = New1_pri_opt(X,y,C), title = "New1, dagger", dagger_rule = T)

plot_decision_boundary(X,y,beta = New3_pri_opt(X,y,C), title = "New3, 0", dagger_rule = F)

plot_decision_boundary(X,y,beta = OVA_pri_opt(X,y,C), title = "OVA")

plot_decision_boundary(X,y,beta = LLW_pri_opt(X,y,C=10), title = "LLW")

plot_decision_boundary(X,y,beta = MSVM7_pri_opt(X,y,C), title = "Modifed LLW, 0", dagger_rule = F)

plot_decision_boundary(X,y,beta = MSVM7_pri_opt(X,y,C), title = "Modifed LLW, dagger")

plot_decision_boundary(X,y,beta = MSVM8_pri_opt(X,y,C), title = "MSVM8")

Case 3
X = rbind(c(-2,5),c(-2,0),c(-0,2),c(4,4))
n = 500
Sigma <- diag(2,2)
X1 <- mvrnorm(n,c(-3,5),Sigma)
X2 <- mvrnorm(n,c(-4,-1),Sigma)
X3 <- mvrnorm(n,c(2,-2),Sigma)
X4 <- mvrnorm(n,c(5,4),Sigma)
X <- rbind(X1,X2,X3,X4)
y <- c(rep(1,nrow(X1)),rep(2,nrow(X2)),rep(3,nrow(X3)),rep(4,nrow(X3)))
# y = c(1,2,3,4)
C = 1
xlim = c( floor(min(X[,1]))-1, ceiling(max(X[,1]))+1)
ylim = c( floor(min(X[,2]))-1, ceiling(max(X[,2]))+1)
plot_nearest_neighbour_decision_boundary(X = rbind(c(-3,5),c(-4,-1),c(2,-2),c(5,4)),y = c(1,2,3,4), dis = "L2", title = "Nearest Neighbour in L2", xlim = xlim, ylim = ylim)

plot_decision_boundary(X,y,beta = WW_pri_opt(X,y,C), title = "WW")

plot_decision_boundary(X,y,beta = CS_pri_opt(X,y,C), title = "CS")

plot_decision_boundary(X,y,beta = Duchi_pri_opt(X,y,C), title = "Duchi")

plot_decision_boundary(X,y,beta = MDuchi_pri_opt(X,y,C), title = "Mduchi")

plot_decision_boundary(X,y,beta = New1_pri_opt(X,y,C), title = "New1, 0", dagger_rule = F)

plot_decision_boundary(X,y,beta = New1_pri_opt(X,y,C), title = "New1, dagger", dagger_rule = T)

plot_decision_boundary(X,y,beta = New3_pri_opt(X,y,C), title = "New3, 0", dagger_rule = F)

plot_decision_boundary(X,y,beta = OVA_pri_opt(X,y,C), title = "OVA")

plot_decision_boundary(X,y,beta = LLW_pri_opt(X,y,C=.1), title = "LLW")

plot_decision_boundary(X,y,beta = MSVM7_pri_opt(X,y,C), title = "Modifed LLW, 0", dagger_rule = F)

plot_decision_boundary(X,y,beta = MSVM7_pri_opt(X,y,C), title = "Modifed LLW, dagger")

plot_decision_boundary(X,y,beta = MSVM8_pri_opt(X,y,C), title = "MSVM8")
